home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
DEMON
/
GRAPHICS
/
PROCESS.ARC
/
!Process
/
!Guide
< prev
next >
Wrap
Text File
|
1993-07-28
|
36KB
|
957 lines
!Process
===========================
256 colour image processing
by
Henrik Bjerregaard Pedersen
About !Process
================
!Process is a 256-colour sprite processing/manipulation program.
It enables you to manipulate 256-colour sprites in a variety of ways,
including noise-removal, sharpening, smoothening, inverting, colour
separation, conversion to black/white or greytones, edge-detection and more.
Besides that, !Process also includes some of the features found in !Paint or
other basic drawing packages.
The following is only a brief summary of the features of !Process. The
number of ways you can distort/alter/manipulate an image are endless, and
would therefor require a RATHER large !Help-file to describe in details.
The best (and most amusing) way to discover the possibilities in (and the
limits of) !Process, is to load an image and simply try the different
operations one by one. However, I strongly recommend that you read this file,
otherwise you may have trouble with some of the features.
Problems
==========
Whenever possible, you should ensure that the images you load into Process
are created without palette or mask, and that the spritefile contains only
one sprite.
Vocabulary
============
Source image ... the image from which pixels/information is READ.
Destination image ... the image to which pixels/information is WRITTEN.
Colour component ... a value in the range 0-255, describing the amount of
either RED, GREEN or BLUE. 0 is nothing, 255 is full.
Kernel ... a 3x3 matrix which is multiplied with the colour
components of a center pixel and its 8 neighbours.
The average of the 9 elements of the kernel is
calculated, and this becomes the colour of the center
pixel.
Image viewer ... any of the (from two to nine) image windows.
Starting
==========
Double click on the !Process-icon, and the program installs itself on the
iconbar.
!Process will claim approx. 160k as long as no image is loaded. After
loading an image, the wimpslot will be increased with at least twice the size
of the spritefile.
Stopping
==========
Select the option Quit from the iconbar menu.
If you end up in an endless loop of error messages, you can in most cases
exit the program by pressing DELETE while clicking on the OK icon in the
error box.
Loading
=========
Drag as spritefile containing a 256 colour sprite as the first sprite to the
iconbar icon, and it will be loaded and will appear in a window.
Click MENU when the mouse is inside this window, and the main menu appears.
Process will also load AIM files, Clear files (in 256 greytones) and sprites
with a 256 entry greyscaled palette.
After applying a filter/effect the processed image will appear in another
window. If you drag a spritefile to either of these windows, !Process will
attempt to load the file, but will fail if the first sprite in the file isn't
the same size and in the same mode as the original, or if the file has a
different size than the original.
Please note that !Process ignores the palette of the sprite, and simply uses
the default 256 colour palette.
Printing
==========
This isn't what !Process is best at. In fact, it doesn't print at all, so
what you'll need to do is to save the image (either to disc or directly to
!Paint) and then use !Paints printing facilities in conjunction with a
RISC OS PDriver to get your piece of art on paper.
Greyscaled images
===================
!Process accepts 3 types of greyscaled images:
AIM (256x256 pixels, 8 bpp, always greyscaled)
Clear (8 bpp, greyscaled palette)
Sprites (with a palette with 256 greyscaled entries).
Beside these, Process can convert any loaded colour sprite to 8 bpp
greytones.
Some of the operations provided by Process are meaningless when applied to
a greyscaled image (eg RGB separation, Greyscale conversion etc.). In these
cases the operation will be inaccesible/shaded in the menu.
Options
=========
When started, !Process reads the systemvariable Process$Options which may
contain the following options:
Name Meaning
-------------------------------------------------------------
max2 Sets the number of copies of the image !Process
max3 creates when a file is loaded.
max4 etc Minimum is 2, maximum is 9. If you don't set max
max9 or set it to an illegal value, max4 is used.
swap Automatic swapping on.
dma Disable DMA during lengthy calculations.
tools Show toolbox.
To perform RGB separation max4 is needed, to perform CMYK separation max5
is needed.
The system variable Process$WindowTitle holds the template string for the
text in the titlebar of the image viewers.
The variable is set in !Process.!Run, and may be altered to include any of
the given pieces of information:
Arg Substituted with
--------------------------
%%0 "Process"
%%1 The name (full path) of the sprite file
%%2 The name (last part) of the sprite file
%%3 The name of the sprite
%%4 The mode in which the sprite was created
%%5 Size X of sprite (pixels)
%%6 Size Y of sprite (pixels)
%%7 The image viewer's number (1 - max)
%%8 Zoom factor X
%%9 Zoom factor Y
Maps
======
Maps are tables translating one colour to another. 256-colour images use one
byte per pixel, so mapping is simply done using a 256-bytes table, so that a
byte with value n is translated into the n'th entry in the table.
Many of the operations in !Process are performed using maps, to name a few:
Invert, Add colour, RGB filter, Translate, Greytones, Brighten, Stretch
histogram, Equalize histogram, Expand/Reduce range etc.
It is possible to create your own map and apply it to the loaded image. If
you drag a 256-bytes Data-file (filetype &FFD) to any of the image viewers,
the file will be loaded and used as a map on that particular image.
You can edit the BASIC-program GenMap to suit your own purposes.
The colour selector
=====================
The colour selector is a window that pops up whenever a selected operation
needs a colour as input. The window contains three slidebars, Red, Green and
Blue which can be used to select the colour, which will be shown to the right
of the slidebars. The five icons at the bottom of the window are:
Pick Click on this and you can select a colour by clicking
SELECT in the source window.
Black Sets all three slidebars to 0 (=black).
White Sets all three slidebars to full (=white).
Cancel Abort the operation/close the window.
OK Apply the filter/effect/operation or close the window.
If you click ADJUST on either of the slidebars, all three bars will be moved.
The palette in the right side of the image can be used to select any of the
256 default colours used in 8 bpp modes.
The grey value selector
=========================
This is exactly the same as the colour selector, except that you only use a
single slidebar to select the colour/grey value.
The windows
=============
The two main windows in !Process are the source and destination windows.
The source window can be identified by the toolbox, the destination window
by the pane window with the arrows.
The toolbox
=============
The toolbox contains icons for various of the most frequently used
operations, such as zoom, pan, copy image, set colour etc. Most operations
can be aborted by selecting another operation or by clicking ADJUST on the
selected icon. From top to bottom, left to right, the icons are:
Select area
-----------
This works exactly as the menu option Misc.Image.Select area.
Use selected area
-----------------
If this icon is set (slabbed inwards) only the selected area of the
source image will be processed. If an area is selected and used,
pressing MENU over this icon will open a window containing icons to
control the selected area. These icons work in the same way as the
sub menu to the menu option Image.Select area.
Copy to destination
-------------------
This copies the source image (or the selected part of the source image)
to the destination image.
Copy from destination
---------------------
The reverse of 'Copy to destination'.
Calculate histogram
-------------------
Calculate and display the histogram of the source image.
Open RGB colour selector
------------------------
Swap images
-----------
Swap source and destination images.
Zoom
----
When this is selected, you can enlarge a portion of the image simply by
dragging a box in the source image window. Click MENU over this icon to
open a window with 8 preset zoom factors.
Painting tools
--------------
Click MENU over this to reveal the 8 painting tools:
Pencil
Filled rectangle
Rectangle
Filled circle
Circle outline
Lines
Flood fill
Global replace
Spraycan
Triangle fill
Triangle
Parallelogram fill
Parallelogram outline
Ellipse fill
Ellipse outline
Smooth line
Note that the painting tools write to the source image, NOT to the
destination image.
Pan
---
Simple, really.
The menus
===========
The icon bar menu
=================
Info
----
...with the usual program info window.
Views.Tidy
----------
Tries ever so hard to tidy the image viewers.
Views.----
----------
A list of all the image viewers.
Create image
------------
Creates a new blank image.
Drop file
---------
Quit
----
The main menu
=============
Miscellaneous.Options.Automatic swap
------------------------------------
If this options is selected, the source and destination image will be
swapped automatically after any operation has been applied to the image.
Miscellaneous.Options.Disable DMA
---------------------------------
If this option is selected, the sound and video DMA will be disabled
while !Process is processing an image. In hi-res modes on an ARM2 this
can increase processing-speed with as much 100% or more.
Miscellaneous.Options.Show toolbox
----------------------------------
If this option is selected, a toolbox will appear on the left side of the
source image window, and a pane window appears on the left side of the
destination image window.
Miscellaneous.Options.Normal panning
------------------------------------
Switches between the two different types of panning.
Miscellaneous.Options.Display in greytones
------------------------------------------
Displays the images (if they are in colour) in greytones.
Greyscaled image can also be shown in colour, by deselecting this option.
Miscellaneous.Edit pencil/spraycan
----------------------------------
Select this to set the shape/size of the pencil tool or the size/
intensity of the spraycan.
Miscellaneous.Plot type
-----------------------
This enables you to select which plot action the painting tools should
use. The default is Set, which means plot the selected colour. The other
possible plot actions are:
OR OR the colour in the image with the selected colour.
AND AND ......
EOR EOR ......
Invert Invert the colour in the image (ignore the selected
colour).
Don't plot Speaks for itself, doesn't it?
AND NOT AND the colour in the image with the inverse of the
selected colour.
OR NOT OR ......
The plot type affects all the painting tools except Spraycan, Flood fill
and Global replace.
Miscellaneous.Reload last
-------------------------
This enables you to reload the last saved image (for that particular
image viewer). In some cases you might experience an error like
'Not enough room in spritearea'. This will typically happen if the image
you are trying to reload has a palette, as !Process stores the images
without palette. There simply isn't room for the extra palette data.
Image.Image info
----------------
Leads to a window with image info.
Image.Convert to greyscale
--------------------------
Converts the image to 256 greytones. This cannot be reversed.
Image.Copy source image
-----------------------
Selecting this option will copy the source image to the destination
image.
Image.Select area
-----------------
This entry allows you to select a part of the image. Almost all
operations on the image will only have effect in the selected area.
Select the option, then click SELECT in one corner of the rectangle you
wish to select and click SELECT again in the other corner.
You can abort the cutting by clicking MENU.
If an area already has been selected, it is possible to adjust the
position/size of the area using the options in the sub-menu to this entry.
Extend top/bottom/right/left will move to appropiate side of
the rectangle to the top/bottom/right side/left side of the
full image.
Top/bottom/right/left neighbour will set the rectangle to an
area with the same width/height as before, but positioned
above/below/to the right of/to the left of the previous area,
so that no pixels overlap.
Image.Clear area
----------------
This will reset the selected part of the image to the full image.
Image.Use full image
--------------------
If this option is selected (ticked), the full image is be used.
Image.Use selected area
-----------------------
If this option is selected, only the selected part of the image will be
affected by the processing.
Range.Reduce range
------------------
This uses a simple algorithme to reduce the range of the colours in the
source image. All colours are moved towards a boring greytone (red, green
and blue = 128).
Range.Expand range
------------------
All colours are moved away from the greytone mentioned above.
Range.Calculate histogram
-------------------------
This calculates and displays the colour histogram of the image.
There will almost always be at least a small amount of both red, green
and blue in all images, even after the image has been thru e.g. a blue
filter. This is due to the fact that the bottom two bits of each byte is
common to the three colour components.
Range.Stretch
-------------
Stretches the colour range of the image. This will stretch a selected
part of the colour histogram so that this part fills the entire range.
If a colour component is outside the selected part it becomes either 0
(if below) or 255 (=full, if above).
Selecting a part of the histogram is done using the lowered rectangle
below the histogram. Clicking ADJUST in this sets the upper limit,
clicking SELECT sets the lower limit.
Range.Equalize
--------------
Histogram equalisation. This will attempt to equalize the histogram so
that there is a (roughly) equal number of pixels in each of the possible
shades.
Range.Transfer median
---------------------
Calculates the mean colour of the image, and transfers it to the RGB
colour selector. This is especially useful if you want to convert a
colour image to greytones, as the mean colour will ensure a reasonably
good conversion.
Range.Colour correction
-----------------------
Uses one of three algorithems to perform colour-correction. The curve
shows 'New colour' vs 'Old colour'.
Gamma (Gamma-correction): Each colour-component is translated to a new
colour using the formula: NewCol = (OldCol ^ Gamma)
Gamma is set using the two up- and down-icons.
Gamma-correction is particually useful on scanned/digitized images.
P-lin: Basically the same as Gamma-corr. You can adjust the curve by
clicking SELECT on it.
Step: Allows you to control the translation of each RGB value to a new
RGB-value.
Process.Invert
--------------
This will invert the image, giving a negative image.
Process.Remove TINT
-------------------
This simply removes the bottom two bits (the TINT part) of all pixels in
the source image.
Process.Brighten
----------------
This adds a small amount to each of the colour components, giving a
brighter image.
Process.Darken
--------------
The reverse of Brighten.
Process.Black & White
---------------------
Converts the image to black and white. The colour components are weighted
according to the selected colour, the median of the three components are
calculated, and if this is above 50% intensity, the pixel becomes white
otherwise it becomes black.
Process.Greytones
-----------------
Converts the image to greytones. The colour components are weighted
according to the selected colour, the median of the three components are
calculated and this is used to select a greytone.
The sensitivity of the eye is approx. 3:5:1 (red,green,blue).
Process.Threshold
-----------------
Converts the image to black and white using thresholding.
Thresholding means that any pixel with 2 or 3 colour components above the
selected colour will become white, the rest will become black.
Process.Add colour
------------------
Adds an variable amount of colour to the red, green and blue colour
components.
Process.Sub colour
------------------
The reverse of Add colour.
Process.RGB filter
------------------
This acts like a sort of coloured glass you put in front of the image.
If the glass is blue, only the blue parts of the image will pass thru
the glass.
Process.Translate
-----------------
The colours in the destination image becomes a weighted sum of the
colour components from the source image, eg:
New RED = 30% Old RED + 60 % Old GREEN + 40% Old BLUE (etc.)
Anything above 100% is cut off.
Process.Shade
-------------
All colours are move towards the selected colour. How much they are
moved is set using the Effect slidebar in the colour selector.
Process.Isolate
---------------
This will turn all pixel black, except for those that are in the same
colour as the selected colour (these are turned white).
Process.RGB separation.True colour
----------------------------------
Process.RGB separation.8 bit per pixel
--------------------------------------
Works only if you've got 4 (or more) copies of the image.
Creates three copies of the source image, one with the red part of the
image, one with the green part and one with the blue part.
Actually, two version of this routine is available.
'True colour' will give you a red, a green and a blue image.
'8 bit per pixel' will give you three very ugly ill-looking images. These
images have 256 levels of red/green or blue, but these levels are mapped
directly to the bytes written to the screen. The effect of this can be
seen by displaying the image in greytones (see Miscellaneous.Options).
The 'true colour' version can also be applied by using
Process.RGB filter.Red/Green/Blue.
Process.CMYK separation
-----------------------
Works only if you've got 5 (or more) copies of the image (see Options).
See 'RGB seperation'.
Process.HSV separation
----------------------
Works only if you've got 4 (or more) copies of the image.
Creates three images showing the values of Hue, Saturation and Value.
Not really very useful, but someone might find it interesting.
Filters.Noise (weak)
--------------------
Noise removing filter. If the two neighbours of a pixel is in the same
colour, the center pixel becomes that colour too.
Filters.Noise (strong)
----------------------
The center pixel is compared with its neighbours to the left, right, top
and bottom. If the center pixel is the brightest of these, it becomes the
average of the four other pixels.
Filters.Average
---------------
Smoothen the image a lot.....
The center pixels becomes the average of colour of itself and its 8
neighbours. The kernel looks like this:
1 1 1
1 1 1
1 1 1
Filters.Sharpen
--------------
Sharpens the edges in an image.
Uses the following kernel:
0 -1 1
- 1 5 1
0 -1 0
Filters.Smoothen (strong)
-------------------------
Doesn't smoothen the image quite as much a 'Average'.
Uses the following kernel:
1 2 1
2 4 2
1 2 1
Filters.Smoothen (weak)
-----------------------
Hardly doesn't smoothen the image at all.
Uses the following kernel:
1 1 1
1 24 1
1 1 1
Filters.Median
--------------
The center pixel becomes the median of the 8 surrounding pixels.
Filters.Vertical edges
----------------------
Detects vertical edges.
Uses the following kernel:
1 0 -1
2 0 -2
1 0 -1
Filters.Horizontal edges
------------------------
Detects horizontal edges.
The kernel is simply the transposed of the one used for vertical edges.
Filters.Edges
-------------
Detects edges of any orientation.
Kernel: 2 1 0
1 0 -1
0 -1 -2
Filters.Minimum
---------------
The minimum of the 9 pixels (the center pixel and its 8 neighbour) is
found, and this is the new colour of the center pixel.
Filters.Maximum
---------------
As 'Minimum', except it finds the maximum.
Filters.Difference
------------------
My own invention! If the difference between the center pixel and the
average of the 8 others is larger than the selected colour, the average
is used, otherwise the pixel is left unchanged.
Effects.Scratch
---------------
Gives the impression that the surface of the image was scratched with a
nail while the paint was still wet.
Effects.Ripple
--------------
An old-time favourite of all demo-makers.
If the 'Double' option is on, a special ripple will be used...
Effects.Trace edges
-------------------
If the distance between any of the three colour component (for any two
adjectant pixels) are greater than the selected minimum distance, the
pixels are said to lie on an edge and are coloured black (the rest is
coloured white).
Effects.Mosaic
--------------
Select this, then click somewhere in the bottom left corner of the source
image window, and see what happens. Abort by clicking MENU or ADJUST.
Effects.Pointillise
-------------------
Dots, Overlap, Wild : Try them, perhaps you'll like them.
Effects.Twist
-------------
Experiment......
Effects.Extend area
-------------------
Any white or black area (blob) in the image will be extended by adding a
new set of white or black pixels all around its border.
Effects.Add noise
-----------------
A simple yet effective noise generator. Adds noise to either the source
or the destination image.
Higher intensity means more noise, but due to the primitive nature of the
noise-generator the position of the noisy pixels will rapidly begin to
repeat themself.
Effects.Cycle bytes
-------------------
Adds/subtracts 1 from each byte in source image, and writes the byte to
the destination image.
If Repeatedly is selected (ticked) the bytes in the destination image
will be cycled repeatedly until you click MENU.
Works only in 256 colour modes (for speed reasons).
If Multi-tasking is selected, the colour cycling will multitask, and
stops when you click any of the mouse buttons over any window/icon that
belongs to !Process.
Effects.Mask
------------
Only those pixels that are black on the destination image will be copied
from the source image, the rest will be left unchanged.
Effects.Mix colours
-------------------
Mixes the colours randomly.
Effects.Wheel
-------------
Basically, this is just a left-over from the Distort-routine (see More
tools). You select an area (triangular) and a circle, and 9 copies of the
triangle are then distorted to fill the circle.
Effects.Squash.Circle
---------------------
Squashed the image to fit inside a circle.
Effects.Squash.Triangle
-----------------------
See above. Works with all images.
Effects.Whirl.Whirl
-------------------
Hmm, not really that easy to explain, but...
A kind of rotation. The rotation angle depends on the distance from the
center fo the image. The routine is quite slow (10000 pixels/second) due
the the amount of maths that is required.
The rotation angle increses when you get closer to the center of the
image.
Effects.Whirl.Son of Whirl
--------------------------
Like above, just different!
The rotation angle decreases when you get closer to the center of the
image.
Effects.Whirl.Whirl revisited
-----------------------------
Like above and the one above that one, but again it's different from
the other one and from the other other one coz otherwise there wouldn't
really be any meaning in including this effect or the one above it.
Has a small bug that causes black rings to occur if the angle is <30.
Arithmetic
----------
These options perform arithmetic and logical operations on pairs of
pixels from the source and destination images. The result is written to
the destination image as always.
Arithmetic.Source + Dest
------------------------
The destination image becomes the sum of the two images.
Arithmetic.Source - Dest
------------------------
See above.
Arithmetic.Dest - Source
------------------------
See above.
Arithmetic.Source EOR Dest
--------------------------
The two pixels are EORed bit by bit.
Arithmetic.Source AND Dest
--------------------------
The two pixels are ANDed.
Arithmetic.Source OR Dest
-------------------------
The two pixels are ORed.
Arithmetic.Source = Dest
------------------------
The destination pixel becomes white if the source pixel is in the same
colour as the old destination pixel, otherwise it becomes black.
Arithmetic.Source <> Dest
-------------------------
The destination pixel becomes white if the source-pixel is in a different
colour than the old destination pixel.
Arithmetic.Source < Dest
------------------------
See above.
Arithmetic.Source > Dest
------------------------
See above.
Arithmetic.MAX(Source;Dest)
---------------------------
The new pixel is coloured as the maximum of each of the three colour
components.
Arithmetic.MIN(Source;Dest)
---------------------------
As 'MAX(Source;Dest)', except it uses the minimum.
Arithmetic.Overlay
------------------
The destination image is used as a RGB-filter for the source image:
White is transparent, black is non-transparent, red allows red colour to
pass thru the filter etc.
Destination RED = (Source RED * Destination RED)/256
Arithmetic.Combine
------------------
The destination image becomes a weighted average of the two images, the
weight is set in the sub-window to this option.
The weight is a number from 0-255, and is used like this:
Dest RED = ((255-Weight) * Source RED + Weight * Dest RED)/255
Thus weight=0 will copy the source image to the destination image, and
weight=255 will leave the destination image unaltered.
Arithmetic.ABS(Source - Dest)
-----------------------------
See 'Source - Dest'.
More tools.Clear
----------------
An easy way of clearing either the source or destination image.
More tools.Flip about X-axis
----------------------------
Flip the source/destination image about the X-axis.
More tools.Flip about Y-axis
----------------------------
Flip the source/destination image about the Y-axis.
More tools.Rotate
-----------------
The destination image becomes a rotated copy of the source image.
Rotation is anti-clockwise, and if an area is selected only that part of
the image will be rotated.
More tools.Shading.Radial to black
----------------------------------
This generates a radial shading from the selected colour to black. The
area affected is selected using the usual rubberband-circle. The colour
outside the circle becomes black (hence the name 'to black'). Note that
although you select the circle in the source window, the shading will
appear in the destination image. The reason for this is that this tool
is meant to be follow by Arithmetic.Overlay to create a shading of the
whole image.
More tools.Shading.Radial to white
----------------------------------
See above.
More tools.Shading.Radial from black
------------------------------------
See above.
More tools.Shading.Radial from white
------------------------------------
See above.
More tools.Shading.Linear to black
----------------------------------
As the 'More tools.Shading.Radial ....' tools, but performs a linear
shading.
More tools.Shading.Linear to white
----------------------------------
See above.
More tools.Shading.Use dithering
--------------------------------
This toggles whether the shading tools should use dithering to increase
the number of shade or not. The image quality is greatly improved when
dithering is ON, but the dithering makes it much harder to process the
image afterwards.
More tools.Distort triangle
---------------------------
This allows you to specify two triangles and then distort the first one
to fit into the second one. The triangle will be read from the source
image, and is written to the destination image.
More tools.Distort quadrangle
-----------------------------
Allows you to distort (almost) any four sided shape.
More tools.Smudge
-----------------
Basically, this is just RECTANGLE x1,y1,s TO x2,y2, but it looks good
anyway, doesn't it?
Save image
----------
All images can be saved in the usual way. When you save an image from any
of the image viewers, the new spritefile becomes the 'last saved image'
for that particular image viewer, which means that it is this file that
will be loaded by the 'Reload last' option.
The images can only be saved as sprites, with or without a palette with
256 entries. This format is only understood by Translator, ChangeFSI and
a few other programs. !Paint in RISC OS 2 doesn't recognise the palette,
but RISC OS 3 !Paint does.
Zoom
----
The images can be shown in any magnification from 10% to 1999%.
The other menu that hasn't been mentioned yet
=============================================
This menu appears when you click MENU over an image viewer that contains
neither the source image nor the destination image.
Use as source
-------------
Will select the image as the new source image.
Use as destination
------------------
See above.
Copy.Copy from source
---------------------
This entry (and the three entries below) allows you to copy the image to
either the source or the destination image.
Copy.Copy from destination
--------------------------
Copy.Copy to source
-------------------
Copy.Copy to destination
------------------------
Reload last
-----------
See Misc.Reload last
Save image
----------
See above.
Zoom
----
See above.
Known problems, bugs and unfinished things
============================================
The filters doesn't work on the pixels on the edges of the image/selected
area. This isn't a bug, it was just so much easier and faster to do it that
way.......
Redrawing isn't always correct after using the rubberband tools (circle,
lines, rectangles etc.) outside a selected area.
The Distort triangle/Distort quadrilateral routine sometimes produces
really weird results. I haven't yet found out why (or when) but I think it
has got something to do with the corners of the shape being selected
clockwise or anti-clockwise.
The Distort quadrangle doesn't allow shapes where any of the interior
angles are > 180 (deg.). It doesn't generate an error, it just doesn't give
the expected result.
A small bug prevents !Process from displaying some spritefiles if the sprite-
file header isn't entirely correct, eg. word #3 is invalid, although this
doesn't cause problems with !Paint.
The whirl effect-family may fail on very large image or when using very
small angles.
------------------------------------------------------------------------------
Henrik Bjerregaard Pedersen
Stengaards Alle 13 B
DK-2800 Lyngby
Denmark
Phone (+45) 42 88 37 56